iT邦幫忙

2024 iThome 鐵人賽

DAY 11
0
Mobile Development

Jetpack Compose 從心開始系列 第 11

Jetpack Compose 從心開始 Day11 - 建議的應用程式架構

  • 分享至 

  • xImage
  •  

前言

   Jetpack Compose 完成了ui,那資料要如何取得呢?

建議的應用程式架構

大家都知道一般一定都是ui 和 資料 分開處理

  • UI 層用於在螢幕上顯示應用程式資料。
  • 資料層包含應用程式的商業邏輯,並公開應用程式資料

現代化應用程式的架構

這個「現代化應用程式架構」鼓勵您採用下列技術:

  • 回應式及分層架構。
  • 應用程式所有層的單向資料流 (UDF)。
  • UI 層含有狀態容器,用於管理 UI 的複雜度。
  • 協同程式和資料流。
  • 依附元件插入最佳做法

UI 層包含兩件事:

在螢幕上顯示資料的 UI 元素。您可以使用 View 或 Jetpack Compose 函式建構這些元素。
狀態持有物件 (例如 ViewModel 類別) 可保存資料、向 UI 公開資料及處理邏輯。

https://ithelp.ithome.com.tw/upload/images/20240921/20121643U5c2KEhshl.png

ViewModel

ViewModel 是 Android Jetpack 架構組件中的一個重要類別,主要用於在配置變更(如螢幕旋轉)或其他生命週期事件發生時,存儲和管理 UI 相關的數據。它能夠在 Activity 或 Fragment 配置變更時倖存下來,確保 UI 狀態的持久性。

ViewModel 的主要作用

  • 存儲 UI 相關數據: 將 UI 所需的數據存儲在 ViewModel 中,而不是 Activity 或 Fragment。
  • 在配置變更時倖存: 當配置發生變化時(例如螢幕旋轉),Activity 或 Fragment 會被重新創建,但 ViewModel 會被保留,從而避免數據丟失。
  • 分離 UI 和數據邏輯: 將 UI 邏輯與數據邏輯分離,提高代碼的可測試性和可維護性。

ViewModel 的基本用法

class MyViewModel : ViewModel() {
    val count = MutableLiveData<Int>()

    init {
        count.value = 0
    }

    fun increment() {
        count.value = count.value?.plus(1)
    }
}
@Composable
fun MyScreen(viewModel: MyViewModel) {
    Text(text = viewModel.count.value.toString())

    Button(onClick = { viewModel.increment() }) {
        Text(text = "Increment")
    }
}

參考

https://developer.android.com/topic/architecture?hl=zh-tw


上一篇
Jetpack Compose 從心開始 Day10 - 活動生命週期階段
下一篇
Jetpack Compose 從心開始 Day12 - 單向資料流
系列文
Jetpack Compose 從心開始30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言